home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 May / Disc 2 / PCU0503CD2.iso / Crystal / 3rdparty / JavaVM / Plug-in / jplugin.exe / jaws.jar / sun / plugin / ActivatorProxyHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-06-22  |  3.5 KB  |  149 lines

  1. package sun.plugin;
  2.  
  3. import java.net.URL;
  4. import java.util.Hashtable;
  5. import java.util.StringTokenizer;
  6. import sun.plugin.protocol.ProxyHandler;
  7. import sun.plugin.protocol.ProxyInfo;
  8. import sun.plugin.protocol.ProxyType;
  9.  
  10. public class ActivatorProxyHandler implements ProxyHandler, ProxyType {
  11.    int proxyType = 0;
  12.    String proxyList;
  13.    String proxyOverride;
  14.    Hashtable proxyTable;
  15.  
  16.    ActivatorProxyHandler(int var1, String var2, String var3) {
  17.       this.proxyType = var1;
  18.       this.proxyList = var2;
  19.       this.proxyOverride = var3;
  20.       this.proxyTable = new Hashtable();
  21.    }
  22.  
  23.    public synchronized ProxyInfo getProxyInfo(URL var1) {
  24.       Object var2 = null;
  25.  
  26.       try {
  27.          ProxyInfo var8 = (ProxyInfo)this.proxyTable.get(var1.getProtocol() + var1.getHost() + var1.getPort());
  28.          if (var8 != null) {
  29.             return var8;
  30.          }
  31.  
  32.          if (this.proxyType != 0 && (this.proxyType != 1 || !this.isProxyBypass(this.proxyOverride, var1))) {
  33.             if (this.proxyType == 1) {
  34.                if (this.proxyList.indexOf("=") == -1) {
  35.                   var7 = new ProxyInfo(this.proxyList);
  36.                } else {
  37.                   String var3 = var1.getProtocol();
  38.                   int var4 = this.proxyList.indexOf(var3 + "=");
  39.                   if (var4 == -1) {
  40.                      var7 = new ProxyInfo((String)null, -1);
  41.                   } else {
  42.                      int var5 = this.proxyList.indexOf(";", var4);
  43.                      if (var5 == -1) {
  44.                         var7 = new ProxyInfo(this.proxyList.substring(var4 + var3.length() + 1));
  45.                      } else {
  46.                         var7 = new ProxyInfo(this.proxyList.substring(var4 + var3.length() + 1, var5));
  47.                      }
  48.                   }
  49.                }
  50.             } else {
  51.                String var9 = this.findProxyForURL(var1.toString());
  52.                var7 = this.extractAutoProxySetting(var9);
  53.             }
  54.          } else {
  55.             var7 = new ProxyInfo((String)null, -1);
  56.          }
  57.  
  58.          this.proxyTable.put(var1.getProtocol() + var1.getHost() + var1.getPort(), var7);
  59.       } catch (Exception var6) {
  60.          System.err.println(((Throwable)var6).getMessage());
  61.          ((Throwable)var6).printStackTrace();
  62.          System.out.println(AppletViewer.getMessage("proxy_defaulted_direct"));
  63.          var7 = new ProxyInfo((String)null, -1);
  64.       }
  65.  
  66.       return var7;
  67.    }
  68.  
  69.    native String findProxyForURL(String var1);
  70.  
  71.    boolean isProxyBypass(String var1, URL var2) {
  72.       if (var1 != null && !var1.equals("")) {
  73.          String var3 = var2.getHost();
  74.          StringTokenizer var4 = new StringTokenizer(var1, ",", false);
  75.  
  76.          while(var4.hasMoreTokens()) {
  77.             String var5 = var4.nextToken();
  78.             if (var5.equals("<local>") && var3.indexOf(".") == -1) {
  79.                return true;
  80.             }
  81.  
  82.             if (this.shExpMatch(var3, var5)) {
  83.                return true;
  84.             }
  85.          }
  86.  
  87.          return false;
  88.       } else {
  89.          return false;
  90.       }
  91.    }
  92.  
  93.    boolean shExpMatch(String var1, String var2) {
  94.       try {
  95.          var1 = var1.toLowerCase();
  96.          var2 = var2.toLowerCase();
  97.          return this.shExpMatch2(var1, var2);
  98.       } catch (Throwable var4) {
  99.          var4.printStackTrace();
  100.          return false;
  101.       }
  102.    }
  103.  
  104.    boolean shExpMatch2(String var1, String var2) {
  105.       if (var1 != null && var2 != null) {
  106.          if (var2.equals("*")) {
  107.             return true;
  108.          } else {
  109.             int var3 = var2.indexOf(42);
  110.             if (var3 == -1) {
  111.                return var1.equals(var2);
  112.             } else if (var3 != 0) {
  113.                Object var6 = null;
  114.                String var5 = null;
  115.                String var7 = var2.substring(0, var3);
  116.                if (var3 <= var1.length()) {
  117.                   var5 = var1.substring(0, var3);
  118.                }
  119.  
  120.                return var7 != null && var5 != null && var7.equals(var5) ? this.shExpMatch2(var1.substring(var3), var2.substring(var3)) : false;
  121.             } else {
  122.                for(int var4 = 0; var4 <= var1.length(); ++var4) {
  123.                   if (this.shExpMatch2(var1.substring(var4), var2.substring(1))) {
  124.                      return true;
  125.                   }
  126.                }
  127.  
  128.                return false;
  129.             }
  130.          }
  131.       } else {
  132.          return false;
  133.       }
  134.    }
  135.  
  136.    ProxyInfo extractAutoProxySetting(String var1) {
  137.       StringTokenizer var2 = new StringTokenizer(var1, ";", false);
  138.       if (var2.hasMoreTokens()) {
  139.          String var3 = var2.nextToken();
  140.          int var4 = var3.indexOf("PROXY");
  141.          if (var4 != -1) {
  142.             return new ProxyInfo(var3.substring(var4 + 6));
  143.          }
  144.       }
  145.  
  146.       return new ProxyInfo((String)null, -1);
  147.    }
  148. }
  149.